import { Module, VuexModule, Mutation, getModule } from 'vuex-module-decorators';
import store from '@/store';

export interface AppConfig {
    sysinfo: any,
    menuButtonInfo?: object,
    version: string,
    platform: string
}
@Module({ name: 'app', namespaced: true, dynamic: true, store })
export default class AppConfigStore extends VuexModule implements AppConfig {
    public sysinfo: any = uni.getSystemInfoSync();
    // 右上角胶囊信息
    // #ifndef APP-PLUS || H5 || MP-LARK
    public menuButtonInfo: any = uni.getMenuButtonBoundingClientRect();
    // #endif
    // 状态栏高度
    public statusBarHeight: number | string = 0;
    // 版本号
    public version: string = uni.getStorageSync('version') || '999.999.999';
    // 设备类型
    public platform: string = '';
    // 设置系统参数
    @Mutation
    public setSysInfo(): void {
        this.statusBarHeight = this.sysinfo.statusBarHeight;
        this.platform = this.sysinfo.platform;
    }

    /**
     * 设置版本信息
     * @param version：版本号
     */
    @Mutation
    public setVersion(version: string): void {
        uni.setStorageSync('version', version);
        this.version = version;
    }

    /**
     * 设置版本更新提示
     */
    @Mutation
    setUpdateManager(): void {
        const updateManager = uni.getUpdateManager();
        updateManager.onCheckForUpdate(function (res) {
            // 请求完新版本信息的回调
            console.log(res.hasUpdate);
        });
        updateManager.onUpdateReady(function (res) {
            uni.showModal({
                title: '更新提示',
                content: '新版本已经准备好，是否重启应用？',
                success(res) {
                    if (res.confirm) {
                        // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                        updateManager.applyUpdate();
                    }
                },
            });
        });
    }
}

export const AppModule = getModule(AppConfigStore);
